/**
第一题：扑克加法的实现
【问题描述】
假设J老师拥有n张扑克牌，那么他可以用这些卡片来记录一个非常大的数字，规则如下，用2-10的卡片代替数字，J代替11，
Q代替12，K代替13，A代替14，X（大小王）代替0， 现在输入两个字符串，每输入一张牌(牌型包括所有的扑克种类)就空一格，输入两组字符串数据来表示两组数字，每输入一个字符串就换一行，请输出两个数字相加后的结果。假如任意一组数据第一位出现X ，则直接输出false，
格式如下：
A J 10 9 8 7 6 5 4 3 2 K 代表的数字是1411109876543213
Q J 10 9 8 7 6 5 4 3 2 A 代表的数字是1211109876543214
则输出的结果为
2622219753086427
2622219753086427

第二组样例
A A A A A A A A A A A A A A X 10
A A A A A A A A A A A A A A X J
2828282828282828282828282828021
2828282828282828282828282828021
**/
#include <iostream>
#include <bits/stdc++.h>

using namespace std;

vector<string> split(string &s) {
    // 把s按空格切开，放到 vector 里
    stringstream ss(s);
    string str;
    vector<string> vs;
    while (ss >> str) {
        vs.push_back(str);
    }
    return vs;
}

vector<int> str2int(vector<string> &vs) {
    vector<int> ret;
    for (string str: vs) {
        if (str == "J") {
            ret.push_back(1);
            ret.push_back(1);
        } else if (str == "Q") {
            ret.push_back(1);
            ret.push_back(2);
        } else if (str == "K") {
            ret.push_back(1);
            ret.push_back(3);
        } else if (str == "A") {
            ret.push_back(1);
            ret.push_back(4);
        } else if (str == "X") {
            ret.push_back(0);
        } else if (str == "10") {
            ret.push_back(1);
            ret.push_back(0);
        } else {
            ret.push_back(stoi(str));
        }
    }
    return ret;
}

int main() {

    string s1, s2;
    getline(cin, s1);
    getline(cin, s2);

    vector<string> vs1 = split(s1);
    vector<string> vs2 = split(s2);

    if (vs1[0] == "X" || vs2[0] == "X") {
        cout << "false";
        return 1; // 不是0
    }

    vector<int> vi1 = str2int(vs1);
    vector<int> vi2 = str2int(vs2);

    cout << "vi1:" << endl;
    for (int i: vi1) {
        cout << i << "";
    }
    cout << endl;

    cout << "vi1:" << endl;
    for (int i: vi2) {
        cout << i << "";
    }
    cout << endl;

    //使用 queue
    cout << "开始求和：" << endl;
    vector<int> ret;
    int addon = 0;

    for (int i = vi1.size() - 1; i >= 0; i--) {
        int n1 = vi1[i];
        int n2 = vi2[i];

        ret.push_back((n1 + n2 + addon) % 10);
        addon = (n1 + n2) / 10;
    }

    if (addon > 0) {
        cout << addon;
    }

    for (int i = ret.size() - 1; i >= 0; i--) {
        cout << ret[i];
    }

    return 0;
}